package persistencia.dao;

import org.hibernate.Query;
import persistencia.hbt.HibernateUtil;
import bean.Cliente;
import bean.Cotizacion;
import bean.EntidadPersistente;

public class CotizacionDAO extends EntidadPersistenteDAO{
	private static CotizacionDAO instancia = null;
	
	public static CotizacionDAO getInstancia(){
		if(instancia == null)
			instancia = new CotizacionDAO();
		
		if (session == null)
			session = HibernateUtil.getSession();
		
		return instancia;
	}
	
	public Cotizacion buscar(EntidadPersistente entidad)
	{
		Cotizacion cotizacion = (Cotizacion) entidad;
		
		if (cotizacion.getId() != null)
			return (Cotizacion) super.buscar(cotizacion);
		else if (cotizacion.getNumeroCotizacion() != null && cotizacion.getCliente() != null)
			return this.buscar(cotizacion.getNumeroCotizacion(), cotizacion.getCliente());
		
		return null;
	}
	
	private Cotizacion buscar(Integer nroCotizacion, Cliente cliente){
		Query query = session.createQuery(" from Cotizacion c where c.numeroCotizacion = :num and c.cliente = :cli");
		query.setInteger("num", nroCotizacion);
		query.setEntity("cli", cliente);
		Cotizacion cotizacion = (Cotizacion) query.setFirstResult(0).setMaxResults(1).uniqueResult();

		return cotizacion;
	}
}
